
#include <signal.h>
#include <unistd.h>

void signal_handle(int num);

int daemon_init()
{
    int pid;
    int pidcout;
    int ret;
    pid = fork();
    if(pid > 0) {
        exit(0);
    } else if(pid < 0) {
        return -1;
    }

    setsid();

    if(pid > 0) {
        exit(0);
    } else if(pid < 0) {
        return -1;
    }

    pidcout = getdtablesize();

    for(int i = 0; i < pidcout; close(i++))
        ;

    signal(SIGTTOU, SIG_IGN);
    signal(SIGTTIN, SIG_IGN);
    signal(SIGTSTP, SIG_IGN);
    signal(SIGHUP, SIG_IGN);
    signal(SIGCHLD, SIG_IGN);
    // signal(SIGKILL,fun);
    if(0 != chdir("/tmp")) { return -1; }

    umask(0);

    return 0;
}

int main()
{
    daemon_init();
    /*
    do_work;
    */
}
